終於來到 AD 最後一天了!!!
說實話,一開始規劃鐵人賽每日主題時,知道 CPTS 的 AD 很重要、一定得面對,才規劃了五天的 AD 初探與實作之路~
但真的超害怕的——AD 完全沒碰過,很怕自己做到一半直接斷更 QQ
一路努力下,雖然不敢說已經搞懂 AD 大計(?),
但不只真的完成了原本的計畫,還把一些之前一直覺得很困惑、很難記的名詞——像是 TGT、TGS、Golden Ticket、NTLM、Kerberos 這些
透過實際操作、看輸出、卡關、問 AI,讓自己真的一個一個想過一輪~
沒想到原本霧颯颯的東西,現在居然真的有慢慢進到腦袋裡了 ><
今天是 AD 的最後一天——
我們邀請到神奇的工具:BloodHound,
把前面蒐集到的線索全部串起來,看看AD 環境裡到底藏著什麼我的攻擊捷徑!👀
說實話,一開始對 BloodHound 的認識就只有——
「好像是個自動化工具,可以找到攻擊路徑><」
完全不知道怎麼用QQ (問了 AI 並實作後才搞清楚 xdd
前幾天我們用 net group、PowerView、setspn.exe......等做information gathering、vulnerability assessment、exploitation時,總有一種感覺:
「我知道有這些帳號、這些群組,但知道後又要怎麼透過他們走到 Domain Admin?」
靠肉眼根本看不出來——這就是 BloodHound 存在的原因~
而且BloodHound 還是工具三兄弟~~~
bloodhound-python / SharpHound 是助手 : 負責出征 AD 環境,蒐集所有線索——有哪些帳號、哪些群組、誰有什麼權限、誰跟誰有關係,蒐集完上繳~
BloodHound 是分析師 : 拿到助手帶回來的資料,把所有關係畫成一張圖,告訴我們:「從這個帳號出發,怎麼有效率的走到 Domain Admin~」
這是今天在Forest機器拿到的target ip 10.129.95.210
bloodhound-python -u svc-alfresco -p s3rvice -d htb.local -ns 10.129.95.210 -c all
-u svc-alfresco -p s3rvice:用這組帳密登入——就是 Day 15 破解出來的-d htb.local:指定要蒐集哪個 Domain 的資料-ns 10.129.95.210:指定 DNS 伺服器——bloodhound-python 需要 DNS 才能找到 DC,這裡直接指定 DC 的 IP-c all:蒐集「所有」資訊——使用者、群組、電腦、ACL(權限設定)、GPO 我全部都要

這個domain有 32 個使用者、76 個群組——他們能做什麼、屬於哪個群組、有什麼特權取得成功!!!
sudo neo4j start





出現Started neo4j (pid:18616),neo4j成功啟動
neo4j是BloodHound 背後用的資料庫——就像 BloodHound 的倉庫,所有蒐集回來的 AD 資料都存在裡面~~~
沒有它,BloodHound 跑不起來~~~
bloodhound &

帳號密碼預設是:
neo4j
neo4j
成功登入
開新的terminal,打ls *.json
ls:列出檔案*.json:只列出副檔名是 .json 的檔案找到 bloodhound-python 蒐集回來的資料檔案——七個 JSON 檔:
computers.json:Domain 裡的電腦groups.json:所有群組containers.json:AD 預設幫我們建好的資料夾,例如 CN=Users、CN=Computers,不能套用 GPOous.json:OU (自己建的資料夾,可以套用 GPO)domains.json:Domain 資訊users.json:所有使用者gpos.json:群組原則這些就是 BloodHound 要分析的原始資料——上傳進去之後,BloodHound 才能把帳號、群組、權限的關係畫成圖。
現在去 BloodHound 視窗:
右上角點 Upload Data,把這七個 JSON 檔案(會在家目錄!!!)全部選起來上傳或是直接把檔案拖進 BloodHound 視窗裡。
但匯入後,畫面上Users 顯示 0,Groups 只有 10——明明 bloodhound-python 說找到 32 個 users、76 個 groups,差很多!
--zip — 打包成 zip 檔:bloodhound-python -u svc-alfresco -p s3rvice -d htb.local -ns 10.129.95.210 -c all --zip
-u svc-alfresco -p s3rvice:用這組帳密登入——就是 Day 15 破解出來的-d htb.local:指定要蒐集哪個 Domain 的資料-ns 10.129.95.210:指定 DNS 伺服器——bloodhound-python 需要 DNS 才能找到 DC,這裡直接指定 DC 的 IP-c all:蒐集「所有」資訊——使用者、群組、電腦、ACL(權限設定)、GPO 全部都要--zip:把所有資訊檔案,打包成一個 zip 檔
sudo neo4j stop # 停掉 neo4j
sudo rm -rf /var/lib/neo4j/data/databases/neo4j # 刪掉舊的資料庫
sudo rm -rf /var/lib/neo4j/data/transactions/neo4j # 刪掉舊的記錄
sudo neo4j start # 重新啟動,自動建新資料庫
確認資料庫狀態——
在瀏覽器,輸入 http://localhost:7474
下
:sysinfo

確定資料庫被我們停掉又重啟後,確實有online
bloodhound &

在登入畫面輸入:
neo4j
neo4j,按Login
在 BloodHound 的 Raw Query 輸入:
MATCH (n) DETACH DELETE n
MATCH (n):找到所有節點DETACH DELETE n:把所有節點跟關係全部刪掉
然後去 BloodHound 上傳剛剛的 zip 檔解壓縮版!
右上角點 Upload Data,上傳剛才重新跑的 zip 檔
先解壓縮剛剛的zip檔
把解壓縮後的資料夾上傳
在 BloodHound 左上角的搜尋欄——輸入 svc-alfresco,按Enter
在圖上對 svc-alfresco 這個節點,按右鍵

點 Mark User as Owned
告訴 BloodHound「這個帳號是我控制的」——標記之後,BloodHound 才能幫我們找「從這個帳號出發,最短幾步走到 Domain Admin」。
MATCH p=shortestPath((u:User {name:"SVC-ALFRESCO@HTB.LOCAL"})-[*1..]->(g:Group {name:"DOMAIN ADMINS@HTB.LOCAL"})) RETURN p
shortestPath:找最短路徑[*1..]:可以經過任意多個節點SVC-ALFRESCO 出發,找到 DOMAIN ADMINS 的最短路徑
看到這張當下,整個人愣住 — 一堆圓圈跟線,完全不知道從哪裡開始看 xdd
問了 AI,AI 點出「那些線上面有字!!!」——我才發現,原來線上面的字就是兩個節點之間的「關係」!
從自己控制的帳號出發,沿著線往外看——線上的字告訴我們目前這個節點跟下一個節點是什麼關係,幫助我們觀察如何從目前身分走到最高權限~
先認識圖上的節點:
| 圖示 | 顏色 | 代表什麼 |
|---|---|---|
| 👥 兩個人 | 🟡 黃色 | 群組(Group) |
| 👤 一個人 | 🟢 綠色 | 使用者帳號(User) |
| 📦 箱子 | 🟠 橘色 | Container/OU |
| 🖥️ 電腦 | 🔴 紅色 | Domain Controller |
| 🌐 internet | 🟢 青綠色 | 整個網域(Domain) |
| 💎 鑽石 | 🔴 紅色 | 高價值目標 ⚠️ |
📦 Container/OU是什麼?
Container 跟 OU 都是 AD 裡用來「裝東西」的資料夾——
CN=Users、CN=Computers,不能套用 GPO再看節點之間的「線」
我一開始完全沒注意到線上有字 xdd 問了 AI 才發現!
線上的字就是兩個節點之間的關係~
來看看我們的圖~~~
SVC-ALFRESCO(就是我!)
↓ MemberOf → 是 SERVICE ACCOUNTS 的成員
↓ MemberOf → SERVICE ACCOUNTS 是 PRIVILEGED IT ACCOUNTS 的成員
↓ CanPSRemote → 可以遠端登入 FOREST.HTB.LOCAL(DC)
↓ DCSync → 可以把 HTB.LOCAL 整個網域的帳密全部偷出來
沿著這條路走,有機會從當前身分,拿到整個網域的最高權限 🎯
看到 BloodHound 的攻擊路徑圖,忍不住就想試著照著走><
但圖上的 shortestPath 只顯示關鍵節點,省略了中間步驟~
搭配 Day 16 的 whoami /groups,看到 BUILTIN\Account Operators——
svc-alfresco 繼承了 Account Operators 的成員身份,所以有管理群組的權限!
再看 BloodHound 的圖,終點是 DCSync~~
才想到「我們有 Account Operators 的權限,那是不是可以利用這個權限,把自己加進關鍵群組,往 DCSync 的方向走?」
BloodHound → 告訴我們終點在哪、大方向是什麼
whoami /groups → 告訴我們手上有什麼權限可以用
兩個合在一起 → 才能真正走這條路
嘗試利用繼承來的 Account Operators 權限,把自己加進關鍵群組,試著走到 DCSync ><
加入成功了,但還是沒辦法真的執行 DCSync——而且發現加入後又會自己消失,不太確定是什麼問題 QQ
雖然沒有真的拿到 Domain Admin,但這五天讓我真的搞懂了 Nested Group 的概念——原來權限可以透過群組一層一層串起來,最後形成一條往高權限前進的路徑(我們的目標!xddd
當然,還是有一些知識盲區,所以沒辦法順利走完整條路 QQ(但至少已經知道路長怎麼樣了!)
比起五天前,現在對 AD 世界的這些名詞:
TGT、TGS、SPN、Kerberoasting、Nested Group、DCSync、BloodHound……
也開始有感覺了!這些以前看到頭很痛的名詞們,現在竟然可以講出它們在幹嘛了 xdd 真棒! 🥹
明天會往下一個目標機器——Cronos 前進~~~
AD 的部分我會私下繼續努力,延續這五天的衝勁,持續拉近我與 AD 間的距離 xddd
五天前還很焦慮「AD 會不會讓我斷更」,沒想到我做到了!!!開心
那我們就明天見囉~~~